# _event_bus.gd (Autoload单例)
extends Node

signal config_loaded                            #配置加载信号
# ----------------------------
# 卡牌系统事件
# ----------------------------
signal card_clicked(card_data: CardData)         # 卡牌单击  
signal card_eliminated(card_data: CardData)      # 卡牌消除
signal card_hovered(card_data: CardData)              # 悬停交互
signal card_hovered_off(card_data: CardData)              # 悬停交互
signal card_double_clicked(card_data: CardData)  # 双击事件（新增）
signal card_state_changed(card_id: String, new_state: int)  # 状态变更（锁定/解锁）
signal card_chain_updated(current_chain: int)
# ----------------------------
# 经济系统事件
# ----------------------------
signal eco_point_updated(value: int)             # 环保值变动
signal currency_updated(currency_type: String, new_value: int)  # 通用货币变更

# ----------------------------
# 角色属性事件
# ----------------------------
signal stamina_updated(value: float)             # 体能变化
signal hunger_updated(value: float)              # 饥饿值变化
signal thirst_updated(value: float)              # 口渴值变化
signal fatigue_updated(value: float)             # 疲劳值变化（新增）
signal heart_rate_updated(value: float)          # 心率变化（新增）

signal recovery_rate_updated(value: float)       # 恢复率变化

signal stamina_cost_reduced(value: float , rounds: int)   # 体能消耗降低
signal recovery_rate_boosted(value: float , rounds: int)  # 恢复率提升


# ----------------------------
# 天气系统事件
# ----------------------------
signal weather_changed(type: String)             # 基础天气变更
signal weather_effect_triggered(effect: String)  # 特殊天气效果（如雷暴）

# ----------------------------
# 路径选择事件
# ----------------------------
signal path_selected(path_type: String, risk_level: int)  # 路径选择结果
signal dice_rolled(result: int)                  # 骰子投掷结果（新增）

# ----------------------------
# 危机管理系统事件
# ----------------------------
signal emergency_triggered(type: String)         # 危机触发（如濒危状态）
signal crisis_resolved(type: String)             # 危机解除（新增）

# ----------------------------
# 成长系统事件
# ----------------------------
signal milestone_unlocked(milestone_id: String)  # 里程碑解锁
signal attribute_upgraded(attribute: String, new_level: int)  # 属性升级

# ----------------------------
# UI交互事件
# ----------------------------
signal tooltip_shown(content: String)            # 悬停提示显示
signal dialog_opened(dialog_type: String)        # 弹窗打开事件
signal inventory_toggled(is_open: bool)          # 背包展开/收起（新增）

# ----------------------------
# 游戏全局状态事件
# ----------------------------
signal game_paused(is_paused: bool)              # 暂停状态变更
signal game_over(reason: String)                 # 游戏结束
signal scene_transition_started(scene_path: String)  # 场景切换开始（新增）

# ----------------------------
# 数据持久化事件
# ----------------------------
signal save_game_requested                       # 存档请求
signal load_game_completed                       # 读档完成

# ----------------------------
# 分析方法
# ----------------------------
func connect_func_signal (signal_name :Signal , func_name :Callable) -> void:
	if not signal_name.is_connected(func_name):
		var error = signal_name.connect(func_name)
		if error != OK:
			push_error("Failed to connect signal: %s" % error)
	else:
		pass
		#print("signal_name :" , signal_name , " is_connected  ",func_name)

func disconnect_func_signal (signal_name :Signal , func_name :Callable) -> void:
	if signal_name.is_connected(func_name):
		signal_name.disconnect(func_name)
	else:
		pass
		
func emit_analytics_event(event_type: String, data: Dictionary) -> void:
	# 对接分析系统（示例：记录卡牌操作）
	match event_type:
		"card_eliminate":
			print("Analytics: Card eliminated - ", data)
		"currency_change":
			print("Analytics: Currency updated - ", data)
		# 可扩展其他事件类型...
